import router from './router';
import storage from './model/Storage';
import store from './store'

const whiteList = ['/errorView', '/login', '/layout']

router.beforeEach((to, from, next) => {
  // console.log('进入路由拦截器', to.path, 'token:', storage.get('token'), '路由列表:', router);
  if (to.path === '/') {
    next('/login')
  }

  if (storage.get('token')) {
    // console.log('token存在,可以进入页面', to.path);
    if (to.path === '/login') {
      // console.log('token存在,前往首页');
      next('/about') // 有token访问登陆页，直接跳转到首页
    } else {
      // console.log('查看dyMenuList的值', store.getters.getDyRouter.length);
      if (store.getters.getDyRouter.length === 0) {
        // console.log('开始获取菜单列表');
        // 判断当前用户是否已拉取完user_info信息
        store.dispatch('getMenu').then((res) => {
          // console.log('获取菜单列表成功', res);
          router.addRoutes(res) // 动态添加可访问路由表
          next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
        }).catch((e) => {
          // console.log('获取菜单列表失败', e);
          storage.removeAll()
          next('/login')
        })
      } else {
        next()
      }
    }
  } else {
    if (whiteList.indexOf(to.path) !== -1) {
      // console.log('token不存在,但在白名单中');
      // 在免登录白名单，直接进入
      next()
    } else {
      // console.log('token不存在,也不在白名单中');
      next('/login')
    }
  }
})
